// 给定一个字符串s，将字符串中每个单词的字符顺序进行反转，同时仍保留空格和单词的初始顺序

// 思路：遍历字符串遇到非空格字符需要统计start和index，然后倒序将字符存入数组中
// 时间复杂度：O(n)，n是字符串的长度
// 空间复杂度：O(n)，arr数组的大小

function reverseWords(str) {
    let arr = []
    let index = 0
    while (index < str.length) {
        let start = index
        while (index < str.length && str[index] !== ' ') {
            index++
        }
        for (let i = index - 1; i >= start; i--) {
            arr.push(str[i])
        }
        while (index < str.length && str[index] === ' ') {
            arr.push(' ')
            index++
        }
    }
    return arr.join('')
}

let s = "  God   Ding"
console.log(reverseWords(s))